﻿#define _CRT_SECURE_NO_WARNINGS 1
//
//// 实现⼀个类，计算程序中创建出了多少个类对象？
//#include<iostream>
//using namespace std;
//class A
//{
//public:
//	A()
//	{
//		++_scount;
//	}
//	A(const A& t)
//	{
//		++_scount;
//	}
//	~A()
//	{
//		--_scount;
//	}
//	static int GetACount()
//	{
//		return _scount;
//	}
//private:
//	// 类里面声明
//	static int _scount;
//};
//// 类外面初始化
//int A::_scount = 0;
//
//
//int main()
//{
//	cout << A::GetACount() << endl;
//	A a1, a2;
//	A a3(a1);
//	cout << A::GetACount() << endl;
//	cout << a1.GetACount() << endl;
//
//	// 编译报错：error C2248: “A::_scount”: ⽆法访问 private 成员(在“A”类中声明)
////cout << A::_scount << endl;
//	return 0;
//}
//



//
//#include <iostream>
//
//using namespace std;
//
//class id;
//class ID
//{
//public:
//	friend void Func(const ID& a, const id& b);
//	ID(int I = 1, int W = 1, int H = 1)
//		:
//		_idnumber(I)
//		, _weight(W)
//		, _height(H)
//	{
//
//	}
//	void Print()
//	{
//		cout << _idnumber << _weight << _height << endl;
//	}
//
//private:
//
//	int _idnumber;
//	int _weight;
//	int _height;
//};
//
//class id
//{
//public:
//	friend void Func(const ID& a, const id& b);
//	id(int I = 1, int W = 1, int H = 1)
//		:
//		_idnumber(I)
//		, _weight(W)
//		, _height(H)
//	{
//
//	}
//	void Print()
//	{
//		cout << _idnumber << _weight << _height << endl;
//	}
//
//private:
//
//	int _idnumber;
//	int _weight;
//	int _height;
//};
//
//void Func(const ID &a,const id &b)
//{
//	cout << a._height << endl;
//	cout << b._height << endl;
//}
//
//int main()
//{
//	ID a1;
//	id a2;
//	Func(a1,a2);
//
//	return 0;
//}
//
//
//
//





//#include <iostream>
//
//using namespace std;
//
//class id;
//class ID
//{
//public:
//	friend class id;
//	
//	friend void Func(const ID& a, const id& b);
//	ID(int I = 1, int W = 1, int H = 1)
//		:
//		_idnumber(I)
//		, _weight(W)
//		, _height(H)
//	{
//
//	}
//	void Print()
//	{
//		cout << _idnumber << _weight << _height << endl;
//	}
//
//private:
//
//	int _idnumber;
//	int _weight;
//	int _height;
//};
//
//class id
//{
//public:
//	friend void Func(const ID& a, const id& b);
//	id(int I = 1, int W = 1, int H = 1)
//		:
//		_idnumber(I)
//		, _weight(W)
//		, _height(H)
//	{
//
//	}
//	void Print()
//	{
//		cout << _idnumber << _weight << _height << endl;
//	}
//	void Func2(const ID& ss)
//	{
//		cout << ss._idnumber << endl;//id为ID的友元类可以直接访问私有成员
//	}
//private:
//
//	int _idnumber;
//	int _weight;
//	int _height;
//};
//
//void Func(const ID& a, const id& b)
//{
//	cout << a._height << endl;
//	cout << b._height << endl;
//}
//
//int main()
//{
//	ID a1;
//	id a2;
//	a2.Func2(a1);
//	
//	return 0;
//}




//#include <iostream>
//
//using namespace std;
//
//class ID
//{
//public:
//    ID(int I = 1, int W = 1, int H = 1)
//        :
//        _idnumber(I)
//        , _weight(W)
//        , _height(H)
//    {
//    }
//    void Print()
//    {
//        cout << _idnumber << _weight << _height << endl;
//    }
//    class id
//    {
//    public:
//        id(int I = 1, int W = 1, int H = 1)
//            :
//            _idnumber(I)
//            , _weight(W)
//            , _height(H)
//        {
//        }
//        void Print()
//        {
//            cout << _idnumber << _weight << _height << endl;
//        }
//        void Func(ID& id_obj)
//        {
//            cout << id_obj._weight << endl;
//        }
//    private:
//        int _idnumber;
//        int _weight = 5;
//        int _height;
//    };
//
//private:
//    int _idnumber;
//    int _weight;
//    int _height;
//};
//
//int main()
//{
//    ID a1;
//    ID::id a2;
//    a2.Func(a1);  // 通过对象 a1 访问 ID 类的私有成员
//    return 0;
//}



//
//#include <iostream>
//
//using namespace std;
//
//class ID
//{
//public:
//    ID(int I = 1, int W = 1, int H = 1)
//        :
//        _idnumber(I)
//        , _weight(W)
//        , _height(H)
//    {
//    }
//    void Print()
//    {
//        cout << _idnumber << _weight << _height << endl;
//    }
//   
//
//private:
//    int _idnumber;
//    int _weight;
//    int _height;
//    class id
//    {
//    public:
//        id(int I = 1, int W = 1, int H = 1)
//            :
//            _idnumber(I)
//            , _weight(W)
//            , _height(H)
//        {
//        }
//        void Print()
//        {
//            cout << _idnumber << _weight << _height << endl;
//        }
//        void Func(ID& id_obj)
//        {
//            cout << id_obj._weight << endl;
//        }
//    private:
//        int _idnumber;
//        int _weight = 5;
//        int _height;
//    };
//};
//
//int main()
//{
//    ID a1;
//    ID::id a2;    //B放在了private里，成为A的专属内部类，其他地方无法访问
//    a2.Func(a1);  // 通过对象 a1 访问 ID 类的私有成员
//    return 0;
//}


#include <iostream>
using namespace std;


class Whatever
{
public:
	int Func()
	{
		//......
	}
	void Print()
	{
		cout << _a << "/" << _b << endl;
	}
private:
	int _a = 2;
	int _b = 1;
};

int main()
{
	Whatever a;//有名对象
	cout << a.Func() << endl;//用有名对象调用

	//用匿名对象调用
	cout << Whatever().Func() << endl;

}